
'宣言 Public MustInherit Class Index (Of T,TKey) Inherits Index(Of T) Implements C1.LiveLinq.Indexing.Search.IIndexScanner(Of T), C1.LiveLinq.Indexing.Search.IIndexScanner(Of T,TKey)
public abstract class Index<T,TKey> : Index<T>, C1.LiveLinq.Indexing.Search.IIndexScanner<T>, C1.LiveLinq.Indexing.Search.IIndexScanner<T,TKey>
インデックスは、コードで 明示的に IndexCollection.Add を呼び出して作成してコレクションに追加するか、 Indexed ヒントを使用することによって LINQ クエリー内で適用されます。
LINQ クエリーでは、 Indexed ヒントを使用してインデックスを指定すると、インデックスによってクエリーのパフォーマンスが最適化されます。LiveLinq は、インデックスを使用してクエリーの速度を向上できるかどうかを自動的に判断するので、原則としてヒントは不要ですが、 ヒントを使用すると、 確実に最適化できます。
また、インデックスは、LINQ 構文を使用しなくても、 Index<T,TKey> クラスによって実装される C1.LiveLinq.Indexing.Search.IIndexScanner<T,TKey> インタフェースのメソッドを使用することで、コード内でプログラムから使用できます。 たとえば、Index<T,TKey> オブジェクトで直接 Find などのメソッドを呼び出すことができます。
インデックスが作成されるたびに トレードオフが生じることに注意する必要があります。検索速度は大幅に速くなりますが、メモリを消費し、 インデックス付きのコレクション(または項目、その要素のいずれか)が変更されるたびにオーバーヘッドが追加されます(通常はわずかです)。これは、通常、 インデックスが維持されるのがクエリーで必要な間だけであるためです。 インデックスを削除するには、IndexCollection.Remove を使用します。
インデックスはサブインデックスを持つことができます(Subindex<T,TKey> を参照)。 サブインデックスはオプションであり、すべてのインデックスタスクで必要なわけではありませんが、コレクションのインデックスがマルチレベル(マルチフィールド)キーで作成される場合は、最適化をさらに促進し、メモリ要件を最小限に抑えるために役立ちます。 サブインデックスがある場合、インデックスはサブインデックスのツリーのルートレベルです。
System.Object
C1.LiveLinq.Indexing.IndexDefinition<T>
C1.LiveLinq.Indexing.Index<T>
C1.LiveLinq.Indexing.Index<T,TKey>